+++ /dev/null
-c4b8e6f83f3e207ff57259307bdb4fc6e49b5881
-diff --git a/util.c b/util.c
-index 92fd724..3412d6b 100644
---- a/util.c
-+++ b/util.c
-@@ -968,8 +968,15 @@ endian_read_double(void* ptr, int read_le)
- }
- p = r;
- }
--
-+
-+// Word order is different on arm, but not on arm-eabi.
-+#if defined(__arm__) && !defined(__ARM_EABI__)
-+ memcpy(&ret, p + 4, 4);
-+ memcpy(((void *)&ret) + 4, p, 4);
-+#else
- memcpy(&ret, p, 8);
-+#endif
-+
- return ret;
- }
-
-@@ -999,12 +1006,20 @@ endian_read_float(void* ptr, int read_le)
- void
- endian_write_double(void* ptr, double d, int write_le)
- {
-- char *r = (char *)(void *)&d;
- int i;
- char *optr = ptr;
-+// Word order is different on arm, but not on arm-eabi.
-+#if defined(__arm__) && !defined(__ARM_EABI__)
-+ char r[8];
-+ memcpy( r + 4, &d, 4);
-+ memcpy( r, ((void *)&d) + 4, 4);
-+#else
-+ char *r = (char *)(void *)&d;
-+#endif
-+
-
- if ( i_am_little_endian == write_le ) {
-- memcpy( ptr, &d, 8);
-+ memcpy( ptr, r, 8);
- }
- else {
- for (i = 0; i < 8; i++)